//
//  NSDate+AFF.h
//  AnyfishApp
//
//  Created by Bob Lee on 15/9/6.
//  Copyright (c) 2015年 Anyfish. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSDate+Extension.h"

typedef NS_ENUM(NSInteger, TimeFormatType) {
    /** yyyy-MM-dd */
    ETimeFormatTimeDate, //日期
    /** yyyy.MM.dd */
    ETimeFormatTimeDateEx, //日期
    /** yyyy-MM-dd hh:mm:ss */
    ETimeFormatTimeCommon,//普通
    /** yyyy-MM-dd hh:mm */
    ETimeFormatTimeShort, //
    /** yyyy-MM-dd hh:mm:ss SSS */
    ETimeFormatTimeLong, //
    /** yyyyMMddhhmm */
    ETimeFormatTimeMask, //
    /** hh:mm */
    ETimeFormatTimeTime, //
    /** hh */
    ETimeFormatTimeHour,
    /** mm */
    ETimeFormatTimeMinute,
    /** yyyy */
    ETimeFormatTimeYear,
    /** MM */
    ETimeFormatTimeMonth,
    /** dd */
    ETimeFormatTimeDay,
    /** SSS */
    ETimeFormatTimeSecond,
    /** MM-dd */
    ETimeFormatTimeShortDate,
    /** MM-dd hh:mm */
    ETimeFormatTimeShortDateTime,
    /** MM月dd日hh:mm */
    ETimeFormatTimeShortDateTime_CN,
    /** MM月dd日 */
    ETimeFormatTimeShortDate_CN,
    
    // 特殊格式
    
    /** yyyyMMdd */
    ETimeFormatTimeDateDotSpan,
    /** yyyy年MM月*/
    ETimeFormatTimeYearMonth
} ;


/**
 星期类型
 */
typedef NS_ENUM(NSInteger, WeekDayType) {
    /** 星期天 */
    EWeekDayTypeSunDay = 0,
    /** 星期一 */
    EWeekDayTypeMonday,
    /** 星期二 */
    EWeekDayTypeTuesday,
    /** 星期三 */
    EWeekDayTypeWednesday,
    /** 星期四 */
    EWeekDayTypeThursday,
    /** 星期五 */
    EWeekDayTypeFriday,
    /** 星期六 */
    EWeekDayTypeSaturday
    
};


@interface NSDate (AFF)

/**
 * 获取当前时间精确到微妙
 */
+ (long)timeMicro;

/**
 * 获取当前时间精确到秒
 */
+ (long)timeSecond;

/**
 * @function
 * 说明 时间字符串转换为日期类型。基本格式化类型
 * @param str
 
 * @return NSDate
 */
+ (NSDate *) string2Date:(NSString *)str;

/**
 * @function currentTimeString
 * 获取格式化后的当前系统时间字符串，基本格式化类型
 * @param 需要的格式类型
 
 * @return 格式后的时间字符串
 */
+ (NSString *)currentTimeString:(TimeFormatType) type;

/**
 * @function
 * 说明 格式化指定日期，获得格式化字符串。基本格式化类型
 * @param 需要的格式类型
 
 * @return 格式后的时间字符串
 */
+ (NSString *)date2String:(NSDate *)date formatType:(TimeFormatType)type;
+ (NSString *)date2StringWithInterval:(NSInteger)interval formatType:(TimeFormatType)type;

/**
 * 系统通用的时间格式化，统一风格
 * @param  date  时间
 
 * @return NSString  格式化后字符串
 */
+ (NSString *)date2String:(NSDate *)date;
+ (NSString *)date2StringWithInterval:(NSInteger)interval;

/**
 * 特殊的时间显示
 * @param  interval   时间戳
 * @param  isMessage  是否鱼酬使用（其他地方使用直接走普通方法）
 
 * @return NSString  格式化后字符串
 */
+ (NSString *)date2StringWithInterval:(NSInteger)interval isMessage:(BOOL)isMessage;

/**
 * @function
 * 说明 获取某个日期在第几个工作日
 * @param date 日期
 * @param desc 工作日描述
 
 * @return 工作日类型
 */
+ (WeekDayType)getWeekDay:(NSDate *)date;

/**
 * @function
 * 说明 获取当前时间是这周的星期几
 
 * @return AFFWeekDayType     1 - 7 代表  星期日到星期六
 */

+ (WeekDayType)getCurrentWeekDay:(NSString **) desc;
/**
 *  活的所有月份的array
 *
 *  @param number 之前多少个月
 *
 *  @return 所有月份数组
 */
+ (NSMutableArray *)getDateArray:(NSUInteger)number;
/**
 *  获得yyyyMM格式的string
 *
 *  @param string 2016年08月
 *
 *  @return 201608
 */
+ (NSString *)getMonthString:(NSString *)string;
@end
